﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using HTTT.Utilities;
using HTTT.DataAccess;
using HTTT.Bussiness;
using System.Configuration;
using HTTT.AD;
using System.Web.Security;

namespace HTTT.admin.htuser
{
    public partial class AddUser: System.Web.UI.Page
    {
        /// <summary>
        ///  View State AddItemID
        /// </summary>
        /// 
        private Guid? AddItemID
        {
            get
            {
                object obj = this.ViewState["_AddItemID"];
                if (obj == null)
                    return null; //default to show ID : 0 
                else
                    return (Guid)obj;
            }
            set
            {
                this.ViewState["_AddItemID"] = value;
            }

        }

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                CheckPermission();
            }
        }

       
        private void CheckPermission()
        {
            if (Page.User.IsInRole(Constants.ROLE_SUPER_ADMINISTRATOR))
            {
                //
            }
            else
            {
                ClientScript.RegisterStartupScript(this.GetType(), "Message", Common.FormatMsgThenRedirect("Bạn không có quyền", "/admin/AminIndex.aspx"), true);
            }
        }

        

        protected void btnSaveClose_Click(object sender, EventArgs e)
        {
            ReturnValue<bool> Valid = ValidateData();
            if (Valid.RetValue)
            {
                ReturnValue<bool> result = SaveForm();
                if (result.RetValue)
                {
                    ClientScript.RegisterStartupScript(this.GetType(), "Redirect", Common.FormatMsgThenRedirect(result.Msg, "UserList.aspx"), true);
                }
                else
                {
                    ClientScript.RegisterStartupScript(this.GetType(), "Redirect", Common.FormatAlertMsg(result.Msg), true);
                }
            }
            else
            {
                ClientScript.RegisterStartupScript(this.GetType(), "Message", Common.FormatAlertMsg(Valid.Msg), true);
            }

        }
        protected void btnSaveNew_Click(object sender, EventArgs e)
        {
            ReturnValue<bool> Valid = ValidateData();
            if (Valid.RetValue)
            {
                SaveForm();
                AddItemID = null;
                Response.Redirect("AddUser.aspx");
            }
            else
            {
                ClientScript.RegisterStartupScript(this.GetType(), "Message", Common.FormatAlertMsg(Valid.Msg), true);
            }

        }
        protected void btnCancel_Click(object sender, EventArgs e)
        {
            Response.Redirect("UserList.aspx");
        }

        private ReturnValue<bool> ValidateData()
        {
            if (txtUsername.Text.Trim() == string.Empty) return new ReturnValue<bool>(false, "Phải nhập username");
            if (txtPwd.Text.Trim() == string.Empty) return new ReturnValue<bool>(false, "Phải nhập password");
            if (txtAnswer.Text.Trim() == string.Empty) return new ReturnValue<bool>(false, "Phải nhập câu trả lời cho câu hỏi bí mật");
            if (txtPwd.Text.Trim() == txtPwdAgain.Text.Trim()) return new ReturnValue<bool>(false, "Mật khẩu không trùng nhau");
            return new ReturnValue<bool>(true, "");
        }


        private ReturnValue<bool> SaveForm()
        {
            MembershipCreateStatus createStatus;
            MembershipUser newUser = Membership.CreateUser(txtUsername.Text, txtPwd.Text, txtEmail.Text, txtQuestion.Text, txtAnswer.Text, true, out createStatus);
            switch (createStatus)
            {
                case MembershipCreateStatus.Success:
                    return new ReturnValue<bool>(true, "Tạo tài khoản thành công");
                case MembershipCreateStatus.DuplicateUserName:
                    return new ReturnValue<bool>(false, "Tên tài khoản đã tồn tại");
                case MembershipCreateStatus.DuplicateEmail:
                    return new ReturnValue<bool>(false, "Tài khoản với email đã tồn tại");
                case MembershipCreateStatus.InvalidEmail:
                    return new ReturnValue<bool>(false, "Địa chỉ email không đúng");
                case MembershipCreateStatus.InvalidAnswer:
                    return new ReturnValue<bool>(false, "Câu trả lời bí mật không đúng");
                case MembershipCreateStatus.InvalidPassword:
                    return new ReturnValue<bool>(false, "Mật khẩu không đủ độ khó");
                default:
                    return new ReturnValue<bool>(false, "Có lỗi xảy ra");
            }
        }
    }
}